#ifndef SHARED_DS_SUN_H
#define SHARED_DS_SUN_H

#include <algorithm/shared/utils/Para.h>
#include <algorithm/shared/utils/Vec3.h>
#include <utils/ParaUtils.h>

#include <boost/describe.hpp>

#include <memory>

namespace solar
{
    class SunShape;
    class SunPosition;

    class Sun : public Para
    {
        public:
            Sun();

#include <utils/class_name.inc>

        private:
            std::shared_ptr<SunPosition> sun_position_;
            // SunShapeType sunshape_type_;
            std::shared_ptr<SunShape> sunshape_;

            BOOST_DESCRIBE_CLASS(Sun, (Para), (), (), (sun_position_, sunshape_))
    };

} // namespace solar
#define CURRENT_CLASS_NAME Sun
#include <utils/class_describe_header.inc>
SOLAR_DESCRIBE_CLASS(Sun, (Para), (), (), (sun_position_, sunshape_))
#endif
